package com.xmut.mall.product.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.xmut.mall.product.searchparam.ManagerProductSearchParam;
import com.xmut.mall.product.searchparam.ProductReviewSearchParam;
import com.xmut.mall.product.searchparam.SpuSearchParam;
import com.xmut.mall.product.utils.PageUtils;
import com.xmut.mall.product.entity.SpuInfoEntity;
import com.xmut.mall.product.utils.RespBean;
import com.xmut.mall.product.vo.AuthSpuVo;
import com.xmut.mall.product.vo.PageVO;
import com.xmut.mall.product.vo.ProductSpuSaveVo;
import com.xmut.mall.product.vo.SpuSaveVo;

import java.util.Map;

/**
 * spu信息
 *
 * @author 1912120131suntingxing
 * @email 1192081604@qq.com
 * @date 2022-07-14 00:45:33
 */
public interface SpuInfoService extends IService<SpuInfoEntity> {

    PageUtils queryPage(Map<String, Object> params);

    /**
     * 测试jwt
     * @return
     */
    RespBean testJwt();

    void saveSpuInfo(SpuSaveVo vo);

    void saveBaseSpuInfo(SpuInfoEntity infoEntity);

    PageUtils queryPageByCondition(Map<String, Object> params);

    /**
     * 商品上架
     * @param spuId
     */
    void productUp(Long spuId);

    /**
     * 根据spuId获取spu信息
     * @param spuId
     * @return
     */
    SpuInfoEntity getSpuInfoBySpuId(Long spuId);

    /**
     * 保存商品Spu
     * @param vo
     * @return
     */
    RespBean saveSpu(ProductSpuSaveVo vo);

    /**
     * 获取商品审核分页数据
     * @param vo
     * @param param
     * @return
     */
    RespBean getProductReviewByPage(PageVO vo, ProductReviewSearchParam param);

    /**
     * 审核Spu
     * @param vo
     * @return
     */
    RespBean authSpu(AuthSpuVo vo);

    /**
     * 获取spu的详情信息
     * @param id
     * @return
     */
    RespBean getSpuDetail(Long id);

    /**
     * 获取spu的分页信息
     * @param vo
     * @param param
     * @return
     */
    RespBean getSpuByPage(PageVO vo, SpuSearchParam param);

    /**
     * 商家端点击编辑获取Spu的全部信息
     * @param spuId
     * @return
     */
    RespBean getSpuDetailWithEdit(Long spuId);

    /**
     * 获取spu对应的sku商品的库存信息
     * @param spuId
     * @return
     */
    RespBean getSpuStock(Long spuId);

    /**
     * 商品spu上架
     * @param spuId
     * @return
     */
    RespBean productSpuUp(Long spuId);

    /**
     * 商品下架
     * @param spuId
     * @return
     */
    RespBean productOFF(Long spuId);

    /**
     * 获取官方管理端的Spu分页数据
     * @param vo
     * @param param
     * @return
     */
    RespBean getManagerSpuPage(PageVO vo, ManagerProductSearchParam param);
}

